home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 3.iso / dist / fw_qt3.idb / usr / freeware / Qt / examples / fileiconview / qfileiconview.h.z / qfileiconview.h
C/C++ Source or Header  |  2002-04-08  |  4KB  |  172 lines

  1. /****************************************************************************
  2. ** $Id:  qt/qfileiconview.h   3.0.3   edited Oct 12 12:18 $
  3. **
  4. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  5. **
  6. ** This file is part of an example program for Qt.  This example
  7. ** program may be used, distributed and modified without limitation.
  8. **
  9. *****************************************************************************/
  10.  
  11. #ifndef QTFILEICONVIEW_H
  12. #define QTFILEICONVIEW_H
  13.  
  14.  
  15. #include <qiconset.h>
  16. #include <qstring.h>
  17. #include <qfileinfo.h>
  18. #include <qdir.h>
  19. #include <qtimer.h>
  20. #include <qiconview.h>
  21.  
  22. class QtFileIconView;
  23. class QDragObject;
  24. class QResizeEvent;
  25.  
  26. /*****************************************************************************
  27.  *
  28.  * Class QtFileIconDrag
  29.  *
  30.  *****************************************************************************/
  31.  
  32. class QtFileIconDrag : public QIconDrag
  33. {
  34.     Q_OBJECT
  35.  
  36. public:
  37.     QtFileIconDrag( QWidget * dragSource, const char* name = 0 );
  38.  
  39.     const char* format( int i ) const;
  40.     QByteArray encodedData( const char* mime ) const;
  41.     static bool canDecode( QMimeSource* e );
  42.     void append( const QIconDragItem &item, const QRect &pr, const QRect &tr, const QString &url );
  43.  
  44. private:
  45.     QStringList urls;
  46.  
  47. };
  48.  
  49. /*****************************************************************************
  50.  *
  51.  * Class QtFileIconView
  52.  *
  53.  *****************************************************************************/
  54. class QtFileIconViewItem;
  55. class QtFileIconView : public QIconView
  56. {
  57.     Q_OBJECT
  58.  
  59. public:
  60.     QtFileIconView( const QString &dir, QWidget *parent = 0, const char *name = 0 );
  61.  
  62.     enum ViewMode { Large, Small };
  63.  
  64.     void setViewMode( ViewMode m );
  65.     ViewMode viewMode() const { return vm; }
  66.     void setOpenItem( QtFileIconViewItem *i ) {
  67.     openItem = i;
  68.     }
  69.  
  70. public slots:
  71.     void setDirectory( const QString &dir );
  72.     void setDirectory( const QDir &dir );
  73.     void newDirectory();
  74.     QDir currentDir();
  75.  
  76. signals:
  77.     void directoryChanged( const QString & );
  78.     void startReadDir( int dirs );
  79.     void readNextDir();
  80.     void readDirDone();
  81.     void enableUp();
  82.     void disableUp();
  83.     void enableMkdir();
  84.     void disableMkdir();
  85.  
  86. protected slots:
  87.     void itemDoubleClicked( QIconViewItem *i );
  88.     void slotDropped( QDropEvent *e, const QValueList<QIconDragItem> & );
  89.  
  90.     void viewLarge();
  91.     void viewSmall();
  92.     void viewBottom();
  93.     void viewRight();
  94.     void flowEast();
  95.     void flowSouth();
  96.     void itemTextTruncate();
  97.     void itemTextWordWrap();
  98.     void sortAscending();
  99.     void sortDescending();
  100.     void arrangeItemsInGrid() {
  101.     QIconView::arrangeItemsInGrid( TRUE );
  102.     }
  103.  
  104.     void slotRightPressed( QIconViewItem *item );
  105.     void openFolder();
  106.  
  107. protected:
  108.     void readDir( const QDir &dir );
  109.     virtual QDragObject *dragObject();
  110.  
  111.     virtual void keyPressEvent( QKeyEvent *e );
  112.  
  113.     QDir viewDir;
  114.     int newFolderNum;
  115.     QSize sz;
  116.     QPixmap pix;
  117.     ViewMode vm;
  118.     QtFileIconViewItem *openItem;
  119.  
  120. };
  121.  
  122. /*****************************************************************************
  123.  *
  124.  * Class QtFileIconViewItem
  125.  *
  126.  *****************************************************************************/
  127.  
  128. class QtFileIconViewItem : public QIconViewItem
  129. {
  130.     friend class QtFileIconView;
  131.  
  132. public:
  133.     enum ItemType {
  134.         File = 0,
  135.         Dir,
  136.         Link
  137.     };
  138.  
  139.     QtFileIconViewItem( QtFileIconView *parent, QFileInfo *fi );
  140.  
  141.     virtual ~QtFileIconViewItem();
  142.  
  143.     ItemType type() const
  144.     { return itemType; }
  145.     QString filename() const { return itemFileName; }
  146.  
  147.     virtual bool acceptDrop( const QMimeSource *e ) const;
  148.  
  149.     virtual void setText( const QString &text );
  150.     virtual QPixmap *pixmap() const;
  151.  
  152.     virtual void dragEntered();
  153.     virtual void dragLeft();
  154.  
  155.     void viewModeChanged( QtFileIconView::ViewMode m );
  156.     void paintItem( QPainter *p, const QColorGroup &cg );
  157.  
  158. protected:
  159.     virtual void dropped( QDropEvent *e, const QValueList<QIconDragItem> & );
  160.  
  161.     QString itemFileName;
  162.     QFileInfo *itemFileInfo;
  163.     ItemType itemType;
  164.     bool checkSetText;
  165.     QTimer timer;
  166.     QtFileIconView::ViewMode vm;
  167.  
  168. };
  169.  
  170.  
  171. #endif
  172.